/**
 ****************************************************************************************************
 * @FileName   : main.c
 * @Author     : JiangZhongxun
 * @Version    : v1.0
 * @Date       : 2025-07-23
 * @Description:
 * @license    : Copyright (C) 2025, JiangZhongxun, China, All Rights Reserved
 ****************************************************************************************************
 * @attention  :
 *
 ****************************************************************************************************
 */

/* 如果是 UTF8 就会有警告，GB2312则无警告 */
// #pragma diag_suppress 870 /* 去除中文警告 */

#include "main.h"
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/delay/delay.h"
#include "./SYSTEM/usart/usart.h"
#include "./BSP/LED/led.h"

/**
 * @Name    main
 * @brief   主函数
 * @param   None
 * @retval
 * @author  JiangZhongxun
 * @Data    2025-07-23
 */
int main(void)
{

    HAL_Init();                          /* 初始化HAL库 */
    sys_stm32_clock_init(360, 25, 2, 8); /* 设置时钟，180MHz */
    delay_init(180);                     /* 延时初始化 */
    usart_init(115200);                  /* 波特率115200 */
    led_init();                          /* 初始化LED */

    uint8_t len = 0;
    uint16_t times = 0;
    
    printf("Start......\r\n");
    
    while (1)
    {
        if (g_usart_rx_sta & 0x8000) /* 接收到数据了 */
        {
            len = g_usart_rx_sta & 0x3FFFF; /* 获取接收到的数据长度 */
            printf("The message you sent is:\r\n");
            /* 发送接收到的数据 */
            HAL_UART_Transmit(&g_uart1_handle, (uint8_t *)g_usart_rx_buf, len, 1000);
            /* 等待数据发送完成 */
            while (__HAL_UART_GET_FLAG(&g_uart1_handle, UART_FLAG_TC) != SET);
            printf("\r\n\r\n");
            g_usart_rx_sta = 0;
        }
        else
        {
            times++;
            if (times % 5000 == 0)
            {
                printf("development board STM32F429IGT6 Serial port experiment......\r\n");
                printf("ZDYZ......\r\n");
            }
            
            if (times % 200 == 0)
            {
                printf("Please enter the data and press the Enter key to end! \r\n");
            }
            
            if (times % 30 == 0)
            {
                LED0_TOGGLE(); /* 闪烁LED0，提示系统正在运行 */
            }
            
            delay_ms(10);
        }
    }
}
